home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
msdos
/
chgpal
/
palette.asm
< prev
Wrap
Assembly Source File
|
1991-10-18
|
3KB
|
117 lines
.286c
page ,132
;***********************************************************************
;* *
;* TOWNSのテキスト用パレット色変更 *
;* *
;* [呼出] call chg_pal( mode , color , n_red , n_green , n_blue ) ; *
;* [入力] mode : 処理モード( 0 : 割合読出 , 1 : 割合書出 ) *
;* color : 変更する色番号(1~7,8~15) *
;* n_red : 赤色の割合数 (0~15) *
;* n_green : 緑色の割合数 (0~15) *
;* n_blue : 青色の割合数 (0~15) *
;* [出力] n_red : 赤色の割合数 (0~15) *
;* n_green : 緑色の割合数 (0~15) *
;* n_blue : 青色の割合数 (0~15) *
;* *
;*---------------------------------------------------------------------*
;* 1 : 1991/06/19 Created by M.Watari *
;* *
;***********************************************************************
public _chg_pal
_TEXT segment word public 'CODE'
assume cs:_TEXT
;
VD_ADRS EQU 0448h ; ビデオ出力コントローラ
VD_DATA EQU 044ah ; ビデオ出力I/Oレジスタ
PL_CODE EQU 0fd90h ; アナログパレットアドレス
PL_BLUE EQU 0fd92h ; 青色のパレットアドレス
PL_RED EQU 0fd94h ; 赤色のパレットアドレス
PL_GREEN EQU 0fd96h ; 緑色のパレットアドレス
;
; メインルーチン
;
_chg_pal proc near
mode equ ss:[bp+4]
color equ ss:[bp+6]
n_red equ ss:[bp+8]
n_green equ ss:[bp+10]
n_blue equ ss:[bp+12]
enter 0,0
push ax
push bx
push dx
push di
mov dx,VD_ADRS ; テキスト用パレットを書き込み対象にする
mov al,01h ; プライオリティレジスタに設定(01)
out dx,al ;
mov dx,VD_DATA ;
mov al,021h ; レイア1用16色パレットに設定(PLT0:1,PLT1:0)
out dx,al
; 指定された色番号のパレットの設定
mov ax,color ; 色番号の設定
mov dx,PL_CODE
out dx,al
mov bx,mode
cmp bx,0
jne short Set_clr
Get_clr:
; 青色用パレット値の取り出し
xor ax,ax
mov dx,PL_BLUE
in al,dx
mov di,n_blue
shr al,4
mov [di],ax ; 青色用パレット値の設定
; 赤色用パレット値の取り出し
xor ax,ax
mov dx,PL_RED
in al,dx
mov di,n_red
shr al,4
mov [di],ax ; 赤色用パレット値の設定
; 緑色用パレット値の取り出し
xor ax,ax
mov dx,PL_GREEN
in al,dx
mov di,n_green
shr al,4
mov [di],ax ; 緑色用パレット値の設定
jmp short finish ; 指定色番号の各色の状態値取り出し終了
Set_clr:
; 青色用パレット値の設定
mov dx,PL_BLUE
mov ax,n_blue
shl ax,4
out dx,al
; 赤色用パレット値の設定
mov dx,PL_RED
mov ax,n_red
shl ax,4
out dx,al
; 緑色用パレット値の設定
mov dx,PL_GREEN
mov ax,n_green
shl ax,4
out dx,al
finish:
mov dx,VD_ADRS ; テキスト用パレットを元に戻す
mov ax,01h ; プライオリティレジスタに設定(01)
out dx,ax ;
mov dx,VD_DATA ;
out dx,ax ; レイア0用16色パレットに設定(PLT0:0,PLT1:0)
pop di
pop dx
pop bx
pop ax
leave
ret
_chg_pal endp
_TEXT ends
end